HAL PKA io operation functions migration

This section provides information about the HAL PKA function migration.

HAL PKA abort

HAL1

HAL2

HAL_PKA_Abort(PKA_HandleTypeDef *hpka)
HAL_PKA_Abort(hal_pka_handle_t *hpka)

Note

The execution of an operation is split into two main functions:

  • HAL_PKA_SetConfig$Operation$ to configure the mode and input parameters of the given operation.

  • HAL_PKA_Compute / HAL_PKA_Compute_IT to start the computation in polling or interrupt modes whatever the operation is.

HAL PKA addition in polling mode

HAL1

HAL2

HAL_PKA_Add(PKA_HandleTypeDef *hpka, PKA_AddInTypeDef *in, uint32_t Timeout);
HAL_PKA_SetConfigAdd(hal_pka_handle_t *hpka, const hal_pka_add_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA addition in interrupt mode

HAL1

HAL2

HAL_PKA_Add_IT(PKA_HandleTypeDef *hpka, PKA_AddInTypeDef *in);
HAL_PKA_SetConfigAdd(hal_pka_handle_t *hpka, const hal_pka_add_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA get result of arithmetic operations

In HAL2, the HAL_PKA_Arithmetic_GetResult has been split into multiple specialized functions to retrieve the result of a specific arithmetic operation.

HAL1

HAL2

HAL_PKA_Arithmetic_GetResult(PKA_HandleTypeDef *hpka, uint32_t *pRes)
HAL_PKA_GetResultAdd(hal_pka_handle_t *hpka, uint8_t *p_result)
HAL_PKA_GetResultSub(hal_pka_handle_t *hpka, uint8_t *p_result)
HAL_PKA_GetResultCmp(hal_pka_handle_t *hpka, uint8_t *p_result)
HAL_PKA_GetResultMul(hal_pka_handle_t *hpka, uint8_t *p_result)
HAL_PKA_GetResultModAdd(hal_pka_handle_t *hpka, uint8_t *p_result)
HAL_PKA_GetResultModSub(hal_pka_handle_t *hpka, uint8_t *p_result)
HAL_PKA_GetResultModInv(hal_pka_handle_t *hpka, uint8_t *p_result)
HAL_PKA_GetResultModRed(hal_pka_handle_t *hpka, uint8_t *p_result)
HAL_PKA_GetResultMontgomeryMul(hal_pka_handle_t *hpka, uint8_t *p_result)

HAL PKA comparison in polling mode

HAL1

HAL2

HAL_PKA_Cmp(PKA_HandleTypeDef *hpka, PKA_CmpInTypeDef *in, uint32_t Timeout);
HAL_PKA_SetConfigCmp(hal_pka_handle_t *hpka, const hal_pka_cmp_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA comparison in interrupt mode

HAL1

HAL2

HAL_PKA_Cmp_IT(PKA_HandleTypeDef *hpka, PKA_CmpInTypeDef *in);
HAL_PKA_SetConfigCmp(hal_pka_handle_t *hpka, const hal_pka_cmp_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA ECC complete addition in polling mode

HAL1

HAL2

HAL_PKA_ECCCompleteAddition(PKA_HandleTypeDef *hpka, PKA_ECCCompleteAdditionInTypeDef *in,
                            uint32_t Timeout);
HAL_PKA_ECC_SetConfigCompleteAdd(hal_pka_handle_t *hpka,
                                 const hal_pka_ecc_complete_add_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA get result of ECC complete addition

HAL1

HAL2

HAL_PKA_ECCCompleteAddition_GetResult(PKA_HandleTypeDef *hpka,
                                           PKA_ECCCompleteAdditionOutTypeDef *out);
HAL_PKA_ECC_GetResultCompleteAdd(hal_pka_handle_t *hpka,
                                          hal_pka_ecc_complete_add_result_t *p_result);

HAL PKA ECC complete addition with interrupt

HAL1

HAL2

HAL_PKA_ECCCompleteAddition_IT(PKA_HandleTypeDef *hpka, PKA_ECCCompleteAdditionInTypeDef *in);
HAL_PKA_ECC_SetConfigCompleteAdd(hal_pka_handle_t *hpka,
                                 const hal_pka_ecc_complete_add_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA ECC double base ladder in polling mode

HAL1

HAL2

HAL_PKA_ECCDoubleBaseLadder(PKA_HandleTypeDef *hpka, PKA_ECCDoubleBaseLadderInTypeDef *in,
                            uint32_t Timeout);
HAL_PKA_ECC_SetConfigDoubleBaseLadder(hal_pka_handle_t *hpka,
                                      const hal_pka_ecc_double_base_ladder_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA get result of ECC double base ladder

HAL1

HAL2

HAL_PKA_ECCDoubleBaseLadder_GetResult(PKA_HandleTypeDef *hpka,
                                       PKA_ECCDoubleBaseLadderOutTypeDef *out);
HAL_PKA_ECC_GetResultDoubleBaseLadder(hal_pka_handle_t *hpka,
                                           hal_pka_ecc_double_base_ladder_result_t *p_result);

HAL PKA ECC double base ladder with interrupt

HAL1

HAL2

HAL_PKA_ECCDoubleBaseLadder_IT(PKA_HandleTypeDef *hpka, PKA_ECCDoubleBaseLadderInTypeDef *in);
HAL_PKA_ECC_SetConfigDoubleBaseLadder(hal_pka_handle_t *hpka,
                                      const hal_pka_ecc_double_base_ladder_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA ECC multiplication

HAL1

HAL2

HAL_PKA_ECCMul(PKA_HandleTypeDef *hpka, PKA_ECCMulInTypeDef *in, uint32_t Timeout);
/* or */
HAL_PKA_ECCMulEx(PKA_HandleTypeDef *hpka, PKA_ECCMulExInTypeDef *in, uint32_t Timeout);
HAL_PKA_ECC_SetConfigMulProtect(hal_pka_handle_t *hpka, const hal_pka_ecc_mul_protect_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

Note

For some STM32 series, instead of using HAL_PKA_ECC_SetConfigMulProtect(hal_pka_handle_t *hpka, const hal_pka_ecc_mul_protect_config_t *p_config), use HAL_PKA_ECC_SetConfigMul(hal_pka_handle_t *hpka, const hal_pka_ecc_mul_config_t *p_config).


HAL PKA ECC multiplication in interrupt mode

HAL1

HAL2

HAL_PKA_ECCMul_IT(PKA_HandleTypeDef *hpka, PKA_ECCMulInTypeDef *in);
/* or */
HAL_PKA_ECCMulEx_IT(PKA_HandleTypeDef *hpka, PKA_ECCMulExInTypeDef *in);
HAL_PKA_ECC_SetConfigMulProtect(hal_pka_handle_t *hpka, const hal_pka_ecc_mul_protect_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

Note

For some STM32 series, instead of using HAL_PKA_ECC_SetConfigMulProtect(hal_pka_handle_t *hpka, const hal_pka_ecc_mul_protect_config_t *p_config), use HAL_PKA_ECC_SetConfigMul(hal_pka_handle_t *hpka, const hal_pka_ecc_mul_config_t *p_config).


HAL PKA get result of ECC multiplication

HAL1

HAL2

HAL_PKA_ECCMul_GetResult(PKA_HandleTypeDef *hpka, PKA_ECCMulOutTypeDef *out);
In normal mode:
HAL_PKA_ECC_GetResultMul(hal_pka_handle_t *hpka, hal_pka_ecc_mul_result_t *p_result);

In fast mode:
HAL_PKA_ECC_GetResultMulFast(hal_pka_handle_t *hpka, hal_pka_ecc_mul_fast_result_t *p_result);

In protect mode:
HAL_PKA_ECC_GetResultMulProtect(hal_pka_handle_t *hpka, hal_pka_ecc_mul_protect_result_t *p_result);

HAL PKA ECC projective to affine with interrupt

HAL1

HAL2

HAL_PKA_ECCProjective2Affine_IT(PKA_HandleTypeDef *hpka,
                                PKA_ECCProjective2AffineInTypeDef *in);
HAL_PKA_ECC_SetConfigProjectiveToAffine(hal_pka_handle_t *hpka, const hal_pka_ecc_projective_to_affine_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA get result of ECC projective to affine

HAL1

HAL2

HAL_PKA_ECCProjective2Affine_GetResult(PKA_HandleTypeDef *hpka,
                                        PKA_ECCProjective2AffineOutTypeDef *out);
HAL_PKA_ECC_GetResultProjectiveToAffine(hal_pka_handle_t *hpka,
                                              hal_pka_ecc_projective_to_affine_result_t *p_result);

HAL PKA ECDSA signature generation

HAL1

HAL2

HAL_PKA_ECDSASign(PKA_HandleTypeDef *hpka, PKA_ECDSASignInTypeDef *in, uint32_t Timeout);
HAL_PKA_ECDSA_SetConfigSignatureProtect(hal_pka_handle_t *hpka,
                                            const hal_pka_ecdsa_signature_protect_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

Note

For some STM32 series, instead of using HAL_PKA_ECDSA_SetConfigSignatureProtect(hal_pka_handle_t *hpka, const hal_pka_ecdsa_signature_protect_config_t *p_config), use HAL_PKA_ECDSA_SetConfigSignature(hal_pka_handle_t *hpka, const hal_pka_ecdsa_signature_config_t *p_config).


HAL PKA get ECDSA signature result

HAL1

HAL2

HAL_PKA_ECDSASign_GetResult(PKA_HandleTypeDef *hpka, PKA_ECDSASignOutTypeDef *out,
                             PKA_ECDSASignOutExtParamTypeDef *outExt);
HAL_PKA_ECDSA_GetResultSignatureProtect(hal_pka_handle_t *hpka,
                                        hal_pka_ecdsa_signature_protect_result_t *p_result,
                                        hal_pka_ecdsa_signature_result_ext_config_t *p_result_ext);

Note

For some STM32 series use HAL_PKA_ECDSA_GetResultSignature(hal_pka_handle_t *hpka, hal_pka_ecdsa_signature_result_t *p_result, hal_pka_ecdsa_signature_result_ext_config_t *p_result_ext) instead.


HAL PKA ECDSA signature in interrupt mode

HAL1

HAL2

HAL_PKA_ECDSASign_IT(PKA_HandleTypeDef *hpka, PKA_ECDSASignInTypeDef *in);
HAL_PKA_ECDSA_SetConfigSignatureProtect(hal_pka_handle_t *hpka,
                                            const hal_pka_ecdsa_signature_protect_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

Note

For some STM32 series, instead of using HAL_PKA_ECDSA_SetConfigSignatureProtect(hal_pka_handle_t *hpka, const hal_pka_ecdsa_signature_protect_config_t *p_config), use HAL_PKA_ECDSA_SetConfigSignature(hal_pka_handle_t *hpka, const hal_pka_ecdsa_signature_config_t *p_config).


HAL PKA ECDSA signature verification

HAL1

HAL2

HAL_PKA_ECDSAVerif(PKA_HandleTypeDef *hpka, PKA_ECDSAVerifInTypeDef *in, uint32_t Timeout);
HAL_PKA_ECDSA_SetConfigVerifSignature(hal_pka_handle_t *hpka,
                                      const hal_pka_ecdsa_verif_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA ECDSA verification with interrupt

HAL1

HAL2

HAL_PKA_ECDSAVerif_IT(PKA_HandleTypeDef *hpka, PKA_ECDSAVerifInTypeDef *in);
HAL_PKA_ECDSA_SetConfigVerifSignature(hal_pka_handle_t *hpka,
                                          const hal_pka_ecdsa_verif_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA ECDSA signature valid

HAL1

HAL2

HAL_PKA_ECDSAVerif_IsValidSignature(PKA_HandleTypeDef const *const hpka);
HAL_PKA_ECDSA_IsValidVerifSignature(const hal_pka_handle_t *hpka);

HAL PKA modular addition in polling mode

HAL1

HAL2

HAL_PKA_ModAdd(PKA_HandleTypeDef *hpka, PKA_ModAddInTypeDef *in, uint32_t Timeout);
HAL_PKA_SetConfigModAdd(hal_pka_handle_t *hpka, const hal_pka_mod_add_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA modular addition with interrupt

HAL1

HAL2

HAL_PKA_ModAdd_IT(PKA_HandleTypeDef *hpka, PKA_ModAddInTypeDef *in);
HAL_PKA_SetConfigModAdd(hal_pka_handle_t *hpka, const hal_pka_mod_add_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA modular exponentiation in polling mode

HAL1

HAL2

HAL_PKA_ModExp(PKA_HandleTypeDef *hpka, PKA_ModExpInTypeDef *in, uint32_t Timeout);
HAL_PKA_SetConfigModExp(hal_pka_handle_t *hpka, const hal_pka_mod_exp_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

Related use case: Use case: PKA in polling mode


HAL PKA fast mode modular exponentiation in polling mode

HAL1

HAL2

HAL_PKA_ModExpFastMode(PKA_HandleTypeDef *hpka, PKA_ModExpFastModeInTypeDef *in, uint32_t Timeout);
HAL_PKA_SetConfigModExpFast(hal_pka_handle_t *hpka, const hal_pka_mod_exp_fast_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA fast mode modular exponentiation with interrupt

HAL1

HAL2

HAL_PKA_ModExpFastMode_IT(PKA_HandleTypeDef *hpka, PKA_ModExpFastModeInTypeDef *in);
HAL_PKA_SetConfigModExpFast(hal_pka_handle_t *hpka, const hal_pka_mod_exp_fast_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA protected modular exponentiation mode in polling mode

HAL1

HAL2

HAL_PKA_ModExpProtectMode(PKA_HandleTypeDef *hpka, PKA_ModExpProtectModeInTypeDef *in,
                          uint32_t Timeout);
HAL_PKA_SetConfigModExpProtect(hal_pka_handle_t *hpka, const hal_pka_mod_exp_protect_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA protected modular exponentiation mode with interrupt

HAL1

HAL2

HAL_PKA_ModExpProtectMode_IT(PKA_HandleTypeDef *hpka, PKA_ModExpProtectModeInTypeDef *in);
HAL_PKA_SetConfigModExpProtect(hal_pka_handle_t *hpka, const hal_pka_mod_exp_protect_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA get result of modular exponentiation

HAL1

HAL2

HAL_PKA_ModExp_GetResult(PKA_HandleTypeDef *hpka, uint8_t *pRes);
In normal mode:
HAL_PKA_GetResultModExp(hal_pka_handle_t *hpka, uint8_t *p_result);

In fast mode:
HAL_PKA_GetResultModExpFast(hal_pka_handle_t *hpka, uint8_t *p_result);

In protect mode:
HAL_PKA_GetResultModExpProtect(hal_pka_handle_t *hpka, uint8_t *p_result);

HAL PKA modular exponentiation with interrupt

HAL1

HAL2

HAL_PKA_ModExp_IT(PKA_HandleTypeDef *hpka, PKA_ModExpInTypeDef *in);
HAL_PKA_SetConfigModExp(hal_pka_handle_t *hpka, const hal_pka_mod_exp_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

Related use case: Use case: PKA in interrupt mode


HAL PKA modular inversion in polling mode

HAL1

HAL2

HAL_PKA_ModInv(PKA_HandleTypeDef *hpka, PKA_ModInvInTypeDef *in, uint32_t Timeout);
HAL_PKA_SetConfigModInv(hal_pka_handle_t *hpka, const hal_pka_mod_inv_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA modular inversion with interrupt

HAL1

HAL2

HAL_PKA_ModInv_IT(PKA_HandleTypeDef *hpka, PKA_ModInvInTypeDef *in);
HAL_PKA_SetConfigModInv(hal_pka_handle_t *hpka, const hal_pka_mod_inv_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA modular reduction in polling mode

HAL1

HAL2

HAL_PKA_ModRed(PKA_HandleTypeDef *hpka, PKA_ModRedInTypeDef *in, uint32_t Timeout);
HAL_PKA_SetConfigModRed(hal_pka_handle_t *hpka, const hal_pka_mod_red_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA modular reduction with interrupt

HAL1

HAL2

HAL_PKA_ModRed_IT(PKA_HandleTypeDef *hpka, PKA_ModRedInTypeDef *in);
HAL_PKA_SetConfigModRed(hal_pka_handle_t *hpka, const hal_pka_mod_red_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA modular subtraction in polling mode

HAL1

HAL2

HAL_PKA_ModSub(PKA_HandleTypeDef *hpka, PKA_ModSubInTypeDef *in, uint32_t Timeout);
HAL_PKA_SetConfigModSub(hal_pka_handle_t *hpka, const hal_pka_mod_sub_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA modular subtraction with interrupt

HAL1

HAL2

HAL_PKA_ModSub_IT(PKA_HandleTypeDef *hpka, PKA_ModSubInTypeDef *in);
HAL_PKA_SetConfigModSub(hal_pka_handle_t *hpka, const hal_pka_mod_sub_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA montgomery multiplication in polling mode

HAL1

HAL2

HAL_PKA_MontgomeryMul(PKA_HandleTypeDef *hpka, PKA_MontgomeryMulInTypeDef *in, uint32_t Timeout);
HAL_PKA_SetConfigMontgomeryMul(hal_pka_handle_t *hpka, const hal_pka_montgomery_mul_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA montgomery multiplication with interrupt

HAL1

HAL2

HAL_PKA_MontgomeryMul_IT(PKA_HandleTypeDef *hpka, PKA_MontgomeryMulInTypeDef *in);
HAL_PKA_SetConfigMontgomeryMul(hal_pka_handle_t *hpka, const hal_pka_montgomery_mul_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA computes montgomery parameters in polling mode

HAL1

HAL2

HAL_PKA_MontgomeryParam(PKA_HandleTypeDef *hpka, PKA_MontgomeryParamInTypeDef *in, uint32_t Timeout);
HAL_PKA_SetConfigMontgomery(hal_pka_handle_t *hpka, const hal_pka_montgomery_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA get montgomery parameter result

HAL1

HAL2

HAL_PKA_MontgomeryParam_GetResult(PKA_HandleTypeDef *hpka, uint32_t *pRes);
HAL_PKA_GetResultMontgomery(hal_pka_handle_t *hpka, uint8_t *p_result);

HAL PKA computes montgomery parameters with interrupt

HAL1

HAL2

HAL_PKA_MontgomeryParam_IT(PKA_HandleTypeDef *hpka, PKA_MontgomeryParamInTypeDef *in);
HAL_PKA_SetConfigMontgomery(hal_pka_handle_t *hpka, const hal_pka_montgomery_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA multiplication in polling mode

HAL1

HAL2

HAL_PKA_Mul(PKA_HandleTypeDef *hpka, PKA_MulInTypeDef *in, uint32_t Timeout);
HAL_PKA_SetConfigMul(hal_pka_handle_t *hpka, const hal_pka_mul_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA multiplication with interrupt

HAL1

HAL2

HAL_PKA_Mul_IT(PKA_HandleTypeDef *hpka, PKA_MulInTypeDef *in);
HAL_PKA_SetConfigMul(hal_pka_handle_t *hpka, const hal_pka_mul_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA point check in polling mode

HAL1

HAL2

HAL_PKA_PointCheck(PKA_HandleTypeDef *hpka, PKA_PointCheckInTypeDef *in, uint32_t Timeout);
HAL_PKA_ECC_SetConfigPointCheck(hal_pka_handle_t *hpka, const hal_pka_point_check_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA point check with interrupt

HAL1

HAL2

HAL_PKA_PointCheck_IT(PKA_HandleTypeDef *hpka, PKA_PointCheckInTypeDef *in);
HAL_PKA_ECC_SetConfigPointCheck(hal_pka_handle_t *hpka, const hal_pka_point_check_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA point check on curve

HAL1

HAL2

HAL_PKA_PointCheck_IsOnCurve(PKA_HandleTypeDef const *const hpka);
HAL_PKA_ECC_IsPointCheckOnCurve(const hal_pka_handle_t *hpka);

HAL PKA RAM reset

HAL1

HAL2

HAL_PKA_RAMReset(PKA_HandleTypeDef *hpka);
HAL_PKA_RAMMassErase(hal_pka_handle_t *hpka);

HAL PKA RSA CRT exponentiation in polling

HAL1

HAL2

HAL_PKA_RSACRTExp(PKA_HandleTypeDef *hpka, PKA_RSACRTExpInTypeDef *in, uint32_t Timeout);
HAL_PKA_RSA_SetConfigCRTExp(hal_pka_handle_t *hpka, const hal_pka_rsa_crt_exp_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA get RSA CRT exponentiation result

HAL1

HAL2

HAL_PKA_RSACRTExp_GetResult(PKA_HandleTypeDef *hpka, uint8_t *pRes);
HAL_PKA_RSA_GetResultCRTExp(hal_pka_handle_t *hpka, uint8_t *p_result);

HAL PKA RSA CRT exponentiation with interrupt

HAL1

HAL2

HAL_PKA_RSACRTExp_IT(PKA_HandleTypeDef *hpka, PKA_RSACRTExpInTypeDef *in);
HAL_PKA_RSA_SetConfigCRTExp(hal_pka_handle_t *hpka, const hal_pka_rsa_crt_exp_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA subtraction in polling

HAL1

HAL2

HAL_PKA_Sub(PKA_HandleTypeDef *hpka, PKA_SubInTypeDef *in, uint32_t Timeout);
HAL_PKA_SetConfigSub(hal_pka_handle_t *hpka, const hal_pka_sub_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA subtraction with interrupt

HAL1

HAL2

HAL_PKA_Sub_IT(PKA_HandleTypeDef *hpka, PKA_SubInTypeDef *in);
HAL_PKA_SetConfigSub(hal_pka_handle_t *hpka, const hal_pka_sub_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);

HAL PKA ECC fast mode multiplication in polling mode

HAL1

HAL2

HAL_PKA_ECCMulFastMode(PKA_HandleTypeDef *hpka, PKA_ECCMulFastModeInTypeDef *in, uint32_t Timeout);
HAL_PKA_ECC_SetConfigMulFast(hal_pka_handle_t *hpka, const hal_pka_ecc_mul_fast_config_t *p_config);
HAL_PKA_Compute(hal_pka_handle_t *hpka, uint32_t timeout_ms);

HAL PKA ECC fast mode multiplication in interrupt mode

HAL1

HAL2

HAL_PKA_ECCMulFastMode_IT(PKA_HandleTypeDef *hpka, PKA_ECCMulFastModeInTypeDef *in);
HAL_PKA_ECC_SetConfigMulFast(hal_pka_handle_t *hpka, const hal_pka_ecc_mul_fast_config_t *p_config);
HAL_PKA_Compute_IT(hal_pka_handle_t *hpka);